package com.atguigu.springcloud.controller;

import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
public class FlowLimitController {
    @GetMapping(value = "/testA")
    public String testA(){
        /*try {
            Thread.sleep(800);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }*/
        return "--------------testA";
    }
    @GetMapping(value = "/testB")
    public String testB(){
        log.info(Thread.currentThread().getName() + "\t" + "...testB");
        return "-------------testB";
    }
    @GetMapping(value = "/testD")
    public String testD(){
//        try {
//            Thread.sleep(1000);
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }
//        log.info(Thread.currentThread().getName() + "\t" + "...testD");
        log.info("testD--->测试异常比例");
        int age = 10/0;
        return "-------------testD";
    }
    @GetMapping(value = "/testE")
    public String testE(){
        log.info("testE  测试异常数");
        int age = 10/0;

        return "--------------testE";
    }

    @GetMapping(value = "/testHotKey")
    @SentinelResource(value = "testHotKey", blockHandler = "deal_HotKey")
    public String hotKey(@PathVariable(value = "p1", required = false) String p1,
                         @PathVariable(value = "p2", required = false) String p2){

        return "hotKeyTest......";
    }
    //hotKey兜底的方法
    public String deal_HotKey(String p1, String p2, BlockException e){
        return "deal_HotKey....../(ㄒoㄒ)/~~";
    }
}
